local userId = ARGV[1]
local voucherId = ARGV[2]
local id = ARGV[3]

local stock = "seckill:stock:" ..voucherId
local order = "seckill:order:" ..voucherId

--判断是否还有库存
if (tonumber(redis.call('get', stock))<=0) then

    return 1
end
--判断该用户是否已经抢购过该秒杀券
if (redis.call('sismember', order, userId)==1) then
    return 2
end

--执行到此处代表具有抢购资格
--库存减1
redis.call('incrby',stock,-1)
--将该用户id加入到已抢购订单中
redis.call('sadd',order,userId)
--将订单信息加入到消息队列中
redis.call('xadd', 'stream.orders', '*', 'userId', userId, 'voucherId', voucherId, 'id', id)
return 0
